!=========================================================================== ! **** Special objects and routines **** Object verhaaltracker with status 1, grot 1, brand 0, draak 0, bruiloft 0, fotoalbum 0, has ; [DeathMessage; if(deadflag == 3) { print "EINDE"; } ]; [AfterLife; VraagToets(0,0,0); ]; [ Herinner onderwerp; switch(onderwerp){ 1: ! Bruiloft VraagToets(0,1,0); style bold; print "^^Met kloppend hart loop je het dorpsplein op. Je voelt je ongemakkelijk in het grijze pak dat je speciaal voor deze gelegenheid gekocht hebt - het past niet bij een eenvoudige jongen als jij. Voor de kerk heeft zich een menigte verzameld. Het hele dorp is er: je ziet jouw ouders staan, en even verderop de ouders van Hilde.^^ Terwijl je stil gaat staan om nog even de rode bloem in je knoopsgat recht te zetten, kijkt iemand in jouw richting en roept je naam. Allen draaien zich om en beginnen te juichen en je naam te roepen. Je voelt de hitte naar je gezicht stijgen, en je wangen krijgen dezelfde kleur als de bloem.^"; style roman; VraagToets(0,0,0); style bold; print "Je houdt er niet van om in het middelpunt van de belangstelling te staan. Je houdt sowieso niet van grote groepen mensen. De meeste tijd breng je daarom alleen door, in het bos bijvoorbeeld, of verzonken in houtsnijwerk. Maar ook alleen zijn heeft nadelen - de zwarte leegte van de eenzaamheid heeft meer dan eens gedreigd je op te slokken. Het beste is om samen te zijn met @'e@'en persoon waar je van kan houden, waarmee je veilig bent en immuun voor het leed van de wereld. Die droom zal vandaag uitkomen."; style roman; VraagToets(0,1,0); style bold; print "^^Eindelijk! Stralend als een lentezon glijdt Hilde het plein op. Haar lange blonde haren omlijsten een engelengezicht dat altijd door een brede glimlach getooid wordt. In haar sneeuwwitte bruidsjurk is ze een betoverde prinses, een mooier, reiner en onschuldiger meisje dan deze wereld verdient te bezitten. En ze komt op jouw af, haar ogen vol liefde en tederheid."; style roman; VraagToets(0,1,0); style bold; print "^^~Ja, dat beloof ik,~ spreekt ze, maar haar ogen zijn al niet meer gericht op de dominee: ze hebben de jouwe gevonden. Je neemt haar hand, haar zachte, tere hand, en zo voorzichtig als je kan schuif je de ring om haar vinger. Zij doet hetzelfde bij jou, en dan buigen jullie hoofden zich naar elkaar toe, en jullie lippen komen samen en bezegelen meer dan woorden ooit zouden kunnen het verbond van eeuwige liefde. Er wordt geklapt en gejuicht, maar jullie staan op een eiland van stilte en beleven de puurheid van samenzijn."; style roman; Vraagtoets(1,1,1); verhaaltracker.bruiloft = 1; 2: ! Fotoalbum switch(verhaaltracker.fotoalbum){ 0: print "In dit dikke boek plakt Hilde alle foto's die van jullie gezinnetje gemaakt worden, al vanaf de geboorte van Maartje. Je slaat het fotoalbum open, en ziet het geboortekaartje van Maartje. Negentien december, slechts enkele dagen voor Kerstmis. Je slaat om, en daar ligt ze als baby in bad. Hilde, uitgeput in het ziekenhuisbed, houdt een huilende Maartje lachend in haar armen. Jijzelf, apetrots, houdt haar omhoog naar de fotograaf. De grootouders van beide kanten staan om het ziekenhuisbed.^ ^ Even laat je je mee drijven op een stroom van gelukzalige herinneringen, maar de gedachte aan de baron brengt je al snel terug naar de realiteit. Verstoord kijk je op. Er staan nog meer foto's in het album.^"; verhaaltracker.fotoalbum = 1; return true; 1: print "Je bladert verder door het album, en ziet Maartje steeds verder opgroeien. Tientallen gelukkige momenten uit een idyllische jeugd zijn hier vereeuwigd."; VraagToets(0,0,0); style bold; print "Maanden heb je in het geheim in de schuur gewerkt aan een poppenhuis voor Maartjes vierde verjaardag. Drie verdiepingen, met deurtjes en raampjes die open en dicht kunnen, allerhande meubels, en houten popjes met fijn gesneden gezichtjes die de woning kunnen bevolken. Hilde heeft gordijntjes gemaakt, vloerkleedjes en kleertjes voor de poppen. Nu staat het prachtige resultaat in kleurig feestpapier verpakt in een hoek van de kamer, en Maartje rent er op af en scheurt het papier aan repen. Ze slaakt een kreetje van verbazing, en kijkt dan minutenlang verwonderd naar het poppenhuis, opent de deurtjes, beweegt de poppen, doet de gordijnen dicht. Dan draait ze zich om, en rent lachend naar jullie toe om je te bedanken. Haar hoge gekir klinkt nu, acht jaar later, nog na in je oren.^"; style roman; verhaaltracker.fotoalbum = 2; return true; 2: print "Je bladert verder door het album, en ziet Maartje steeds verder opgroeien. Tientallen gelukkige momenten uit een idyllische jeugd zijn hier vereeuwigd."; VraagToets(0,0,0); style bold; print "Het is midden in de zomer, en jullie zijn gedrie@:en het bos in getrokken voor een ouderwetse picknick. De zevenjarige Maartje rent steeds vooruit, terwijl Hilde en jij met de zware mand tussen jullie in in gestaag tempo over het pad lopen. ~Pappie!,~ roept ze plotseling, ergens links van jullie uit het bos. ~Pappie, kom eens kijken!~ Hilde rolt haar ogen en neemt de mand met twee handen vast, zodat jij vrij bent het bos in te duiken. Een meter of twintig van het pad af staat ze bij een buddleia waar zoveel koolwitjes omheen zwermen dat de paarse bloemen nauwelijks te zien zijn. ~Kijk pappa!,~ roept ze, en springt naar de struik toe. Alle vlinders vliegen op, en voor een moment is ze een engel in een witte wolk van vleugels.^"; style roman; verhaaltracker.fotoalbum = 3; return true; 3: print "Je bladert verder door het album, en ziet Maartje steeds verder opgroeien. Tientallen gelukkige momenten uit een idyllische jeugd zijn hier vereeuwigd."; VraagToets(0,0,0); style bold; print "Het is een half jaar later, in de ijzige wintermaanden. Met Maartje ben je gaan slee@:en over het dikke pak sneeuw dat zich de afgelopen dagen over het dorp heeft afgezet. Jullie zijn helemaal naar de top van de Barentopf gesleed. ~Pappa, m'n handen doen zeer,~ klaagt Maartje. ~Ze zijn zo koud.~ Voorzichtig neem je haar kleine in jouw grote handen, en wrijf je ze warm. Je buigt je voorover en zoent haar op haar koude voorhoofd.^"; style roman; verhaaltracker.fotoalbum = 4; return true; 4: print "De laatste foto's in het album zijn van Maartjes negende verjaardag. Verbaasd sla je lege pagina's hierna om. Slechts de lijmresten van fotoplakkertjes doorbreken het egale zwart waar de foto's van de afgelopen drie jaren zouden moeten prijken.^"; verhaaltracker.fotoalbum = 5; }; default: ""; }; ]; [EndSceneOne; VraagToets(1,1,0); style bold; print "^^^^^^^^ ^ DE BARON^"; style roman; print "^ Een interactief verhaal geschreven door Victor Gijsbers."; VraagToets(0,1,0); style bold; print "^^^ Chi l'anima mi lacera?^ Chi m'agita le viscere?^ Che strazio, ohim@`e, che smania!^ Che inferno, che terror!^^^ ~Wie verscheurt mijn ziel?^ Wie windt mijn hart zo op?^ Wat een kwelling, wat een waanzin!^ Wat een hel! Welk een verschrikking!~^^^^^"; style roman; print " Uit de opera ~Don Giovanni~^ Tekst: Lorenzo da Ponte^ Muziek: Wolfgang A. Mozart"; VraagToets(0,1,0); print "^^Twee doordringende dissonanten, kort na elkaar, wekken je uit je onrustige slaap. Na de tweede toon zwijgt de kerkklok en de stilte van de winternacht nestelt zich weer in het dorp. Je wrijft de slaap uit je ogen. Uiterst voorzichtig stap je uit bed, opdat je je vrouw Hilde niet wakker maakt. Zij zou je zeker proberen te stoppen. ^^^^"; VraagToets(0,0,0); verhaaltracker.status = 2; verhaaltracker.brand = 0; verhaaltracker.draak = 0; StopDaemon(draak); PlayerTo(mijnslaap); remove bijl; remove harnas; remove helm; remove draak_vuur; return true; ]; [ TuinNaarBos; print "Heel even aarzel je, maar dan stap je vastbesloten de weg naar het donkere woud op. In het dorp is geen teken van leven te bekennen. Langzaam wordt je boos op al je buren en mededorpelingen. Waar zijn ze wanneer je ze nodig hebt? Waarom is er niet @'e@'en bij die het lef heeft Maartje te bevrijden? Een gebrek aan liefde - dat is wat mensen in staat stelt de problemen van anderen te negeren. Iedereen weet wat er aan de hand is, maar niemand doet iets, omdat niemand zich verantwoordelijk voelt."; VraagToets (0,0,0); print "Na enkel minuten bereik je de rand van het bos. Alsof je de donkere muil van een enorm en kwaadaardig beest in loopt, zo is het om het pad onder het overhangende bladerdek van de naaldbomen te volgen. Het licht van de maan bereikt de grond nauwelijks, en meermaals struikel je over grote takken die als valstrikken onder de sneeuw liggen te wachten."; VraagToets (0,0,0); print "Met ferme tred stap je verder, terwijl je probeert te bedenken hoe je het gemakkelijkst het kasteel van de baron in kan komen. Dan wordt je uit je overpeinzingen opgeschrikt door het gehuil van wolven. Het is moeilijk schatten, maar je zou verbaasd zijn als ze meer dan een kilometer van je verwijderd zijn. En het is nog zeker tien kilometer oostwaarts naar het kasteel van de baron.^^"; verhaaltracker.status = 3; PlayerTo(bos_1); return true; ]; [SmeltendTraliewerk; while (child(kasteel_kerker_cel)) move child(kasteel_kerker_cel) to kasteel_kerker; remove kasteel_kerker_cel; give kasteel_kerker_tralies general; give toorts ~light; give toorts ~general; print "Je gooit de sleutel zo ver mogelijk de kerker door, zodat je er zeker van kan zijn dat je hem niet meer kan bereiken. Daarmee heb je je lot bezegeld."; VraagToets(0,0,0); print "Na enkele uren val je in een onrustige slaap. In je droom verschijnt opnieuw en opnieuw het gezicht van Maartje, steeds met een blik van diepe pijn in haar ogen, en verdwijnt dan plotsklaps wanneer het bulderende lachen van de baron de wereld vult."; VraagToets(0,0,0); if(TestScope(toorts)) { print "Je schrikt wakker, en je ziet dat de toorts is uitgegaan. "; if(kerker_luik has open) { print "Vanuit de verte blinkt het sleuteltje in het sterrenlicht - maar het had evengoed aan het andere einde van de wereld kunnen liggen. "; } print "Niet veel later val je weer in slaap."; } else { print "Je schrikt wakker, maar er is niets veranderd. Vanuit de verte blinkt het sleuteltje in het sterrenlicht - het had evengoed aan het andere einde van de wereld kunnen liggen. Niet veel later val je weer in slaap."; } VraagToets(0,0,0); print "Nu droom je dat je zelf een baron bent. Je bent gekleed in een harnas, hebt een grote bijl in je hand en de opdracht een monsterlijke draak te doden. Voorzichtig maar moedig loop je een grot door, en zodra je het ondier ontwaart ren je, de bijl zwaaiend, op hem af. Maar hij heft zijn kop en spuwt vuur - hitte en licht en pijn vullen de wereld, en je voelt hoe het metaal van je harnas smelt en je lichaam binnendringt."; VraagToets(0,0,0); "Verschrikt open je je ogen, en ziet nog net hoe het ijzeren traliewerk van de cel witheet is geworden en in dikke klodders naar beneden druipt, instort, en razendsnel afkoelt tot een egaal zwarte massa metaal op de vloer."; ]; [TorenOmhoog; StopDaemon(kasteel_toren_stapels); if(kasteel_toren_stapels.verbrand == 0) print "Je rent de trap op, die rond en rond draait totdat je bijna bovenin de toren moet zijn. Daar komt hij uit in een grote kamer.^"; if(kasteel_toren_stapels.verbrand > 0 && kasteel_toren_stapels.verbrand < 4) print "Je rent de met rook gevulde trap op, die rond en rond draait totdat je bijna bovenin de toren moet zijn. Als een engel der wrake stap je uit de rook naar voren, een grote kamer in.^"; if(kasteel_toren_stapels.verbrand == 4) print "^Hoestend en proestend ren je de trap op, de enige uitweg, achtervolgd door dikke slierten van de zwarte rook. Na een klim die je tot bovenin de toren gevoerd moet hebben stap je een grote kamer in waar nauwelijks rook hangt.^"; if(kasteel_toren_stapels.verbrand > 4) print "Je rent de nu zwarte trap op, die rond en rond draait totdat je bijna bovenin de toren moet zijn. Daar komt hij uit in een grote kamer.^"; PlayerTo(kasteel_toren_2); return true; ]; [PlayerOrders; Attack: if(noun == player && actor == player) { if(verhaaltracker.grot == 1 && verhaaltracker.brand > 0 && parent(bijl) == player) { print "De pijn, het licht, de draak - alles verdwijnt naar de achtergrond wanneer je je terugtrekt in de innerlijke kalmte van je ziel. Je hebt verloren, je queeste is mislukt; je kan alleen nog de eer aan jezelf houden. Rustig, bedaard, met snelheid en precisie maak je je klaar. "; if(helm has worn) print "De helm zet je af. "; print "Je houdt de bijl stevig vast, draait het blad naar je toe, en slaat met een enkele klap je eigen hoofd doormidden."; EndSceneOne(); return true; }; }; return false; Burn: if(noun == player && actor == player) { if(TestScope(toorts,player)) { if(second == toorts || second == nothing) { if(toorts has general) { if(verhaaltracker.status == 5) { "Hier in deze lege hallen zullen maar weinigen onder de indruk zijn van je zelfverbranding."; } else { ZelfVerbrand(); return true; }; } else { "Nu de toorts gedoofd is kan je er niets meer mee aansteken."; } } else { "Daarmee kan je niets aansteken."; } } } return false; default: return false; ]; [BecomeWolf; ChangePlayer(wolvin); self.status = 99; give jongewolf proper; move selfobj to grot_hal; move dode_ik to bos_2; print "Het warme, zoete bloed stroomt over je tong. Hongerig scheur je hompen vlees uit het lichaam en verorbert ze. Naast je begint ook je kind te smullen van het vlees van de prooi, het eerste wat hij, afgezien van een halve woelmuis, in een week binnen heeft gekregen. Je draait je naar hem toe, en likt zijn vacht. Hij gromt tevreden, en gaat dan verder met eten. Hij ziet geen zorgen meer, en waant zich veilig."; VraagToets(0,0,0); print "Maar jij weet beter. Zolang de jager in het grote stenen huis zit zijn jullie geen van beiden veilig. En nu dit onverwachte maal je nieuwe kracht heeft gegeven, is het tijd met hem af te rekenen.^"; return true; ]; [ZelfVerbrand; print "Je weet dat je verdoemd bent, dus waarom de pijn nog langer uitstellen? Grimmig houd je de vlam van de toorts tegen je eigen kleding. Het vuur en, meteen daarna, de pijn verspreiden zich over je hele lichaam, tot ook je haren en je gezicht in de fik staan en je niets ziet dan vuur en vlammen. Als een wilde begin je in het rond te rennen, schreeuwend en vloekend.^^"; if(baron.state == 1 || baron.state == 3) print "Vanaf zijn troon lacht de baron bulderend. ~Goed zo, mijn waarde, goed zo! Eindelijk begrijp je wie je bent en wat je bent!~^^"; if(baron.state == 2) print "Het erbarmelijke huilen van de baron neemt in intensiteit nog toe wanneer hij jou ziet en begrijpt wat zijn eeuwige lot zal zijn.^^"; if(baron.state == 4) print "~Mijn God, mijn God!~, hoor je de baron angstig uitroepen vanaf zijn troon, waarna hij als een bezetene het Onze Vader gaat bidden.^^"; print "Na korte tijd loop je plots tegen de bronzen deuren achterin de zaal op. De brandende man die erin gegraveerd is kijkt je grijnzend aan, en lijkt je zelfs te wenken om verder te komen."; VraagToets(0,0,0); print "Je loopt nog dichter naar hem toen, en de deuren zwaaien vanzelf open, van je af - erachter ligt niets dan duisternis. Je loopt verder, en wanneer je de drempel oversteekt valt de linker deur met een donderen geraas om, geeft een klap als een koperen gong en blijft liggen. Onmiddellijk daarna valt ook de rechter deur en laat nogmaals een door merg en been snijdende dissonant weerklinken. Het vuur om je heen wordt elk moment minder terwijl je ziel steeds uitbundiger vlam vat. Je doet nog een stap, en staat..."; VraagToets(0,0,0); verhaaltracker.status = 7; PlayerTo(final_overloop); while(child(player)) remove child(player); StopDaemon(baron); return true; ]; [DoodMijMetScherf; if(location == final_haarslaap && maartje.state == 1) { print "Met een bleek gezicht kijk je Maartje aan, en laat haar de scherf zien.^^"; dood_mij_bij_maartje_dialoog.select(1); } print "Je staart even naar het vlijmscherpe stuk glas, maar je weet dat er niets anders op zit. Je zet de punt van de scherf in de huid van je pols, precies waar de slagader zich bevindt, en drukt. Een druppel bloed welt op uit het kleine gaatje.^^"; twijfel_aan_zelfmoord_dialoog.select(1); if(twijfel_aan_zelfmoord_dialoog.twijfel == 1) return true; print "Met een felle haal snijd je in de richting van je arm, zodat je slagader over een lengte van centimeters open ligt. Felrood bloed spuit naar buiten, over je handen, over de scherf, over je nachthemd, over de grond. Je zakt op je knie@:en in elkaar. Nu is het alleen nog een kwestie van tijd."; VraagToets(0,0,0); print "Terwijl je leven langzaam wegvloeit komen er vragen bij je op, vragen waarop je het antwoord nu heel helder kan zien.^^"; if(maartje.state == 1) {doodmijmetscherf_vragen.select(1);} ! Ze leeft nog. else {doodmijmetscherf_vragen_2.select(1);} return true; ]; Object doodmijmetscherf_vragen class Character, with quip [a b; switch (a) { 12: print "Was dit de gemakkelijke uitweg?^^"; 13: qtype = MainMenu; qqon = true; killz = true; killq = true; 14: return Qlist(b, 2, 2, 3); 21: "Ja. Ik was niet in staat te blijven leven met deze schuld."; 22: print "Zal Maartje je ooit vergeven?^^"; 23: qqon = true; killz = true; killq = true; 24: return Qlist(b, 2, 4, 5); 31: "Nee. Het was het moeilijkste offer dat ik ooit bracht."; 32: print "Zal Maartje je ooit vergeven?^^"; 33: qqon = true; killz = true; killq = true; 34: return Qlist(b, 2, 4, 5); 41: "Nee. Of ik haar leven nu voor altijd verpest heb of niet, ze zal me altijd blijven haten."; 42: deadflag = 3; return true; 43: qqon = true; killz = true; killq = true; 51: "Ja. Met de tijd helen de wonden en neemt haar haat af; en misschien zal er een dag komen dat ze me een heel klein beetje zal begrijpen, en een heel klein beetje medelijden - of zelfs liefde - zal voelen."; 52: deadflag = 3; return true; 53: qqon = true; killz = true; killq = true; } rfalse; ], has concealed; Object doodmijmetscherf_vragen_2 class Character, with quip [a b; switch (a) { 12: print "Was dit de gemakkelijke uitweg?^^"; 13: qtype = MainMenu; qqon = true; killz = true; killq = true; 14: return Qlist(b, 2, 2, 3); 21: "Ja. Ik was niet in staat te blijven leven met deze schuld."; 22: deadflag = 3; return true; 23: qqon = true; killz = true; killq = true; 31: "Nee. Het was het moeilijkste offer dat ik ooit bracht."; 32: deadflag = 3; return true; 33: qqon = true; killz = true; killq = true; } rfalse; ], has concealed; Object twijfel_aan_zelfmoord_dialoog class Character, with twijfel 1, quip [a b; switch (a) { 12: print "Heb je de moed om hiermee door te gaan?^^"; 13: qtype = MainMenu; qqon = true; killz = true; killq = true; 14: return Qlist(b, 2, 2, 3); 21: "Ja. Ik ben er sterk genoeg voor."; 22: self.twijfel = 0; 23: qqon = true; killz = true; killq = true; 31: "Nee. Ik kan het niet."; 32: self.twijfel = 1; 33: qqon = true; killz = true; killq = true; } rfalse; ], has concealed; [ZijDoodtMijMetScherf x; ! x = 1 halsslagader, 2 buik, 3 kruis print "Je staart naar het vlijmscherpe stuk glas terwijl het op je af komt, maar je weet dat er niets anders op zit. "; if(x == 1) { print "Ze zet de punt van de scherf in de huid van je hals, precies waar de slagader zich bevindt, en drukt. Een druppel bloed welt op uit het kleine gaatje."; VraagToets(0,0,0); print "Nog @'e@'enmaal kijkt ze je aan, afgrijzen en verdriet strijdend in haar ogen. Met een felle haal snijdt ze dan in je hals, zodat je slagader over een lengte van centimeters open ligt. Felrood bloed spuit naar buiten, over haar handen en armen, over de scherf, over je nachthemd, over de grond. Je zakt in elkaar. Nu is het alleen nog een kwestie van tijd."; } if(x == 2) { print "Ze zet de punt van de scherf in de huid van je buik, waar al je organen zich bevinden, en drukt. Een felle pijnscheut schiet door je lichaam."; VraagToets(0,0,0); print "Nog @'e@'enmaal kijkt ze je aan, een blik vol afgrijzen en haat. Met een felle haal snijdt ze dan je buik open, zodat je ingewanden naar buiten tuimelen. Er is nauwelijks bloed, maar de pijn is zo heftig dat ze je het denken bijna onmogelijk maakt. Nu is het alleen nog een kwestie van tijd - van lange, afschuwelijke minuten."; } if(x == 3) { print "Met haar ene hand pakt Maartje je geslacht vast - even mechanisch als altijd. Maar nu heeft ze in haar andere hand de scherf, en gefascineerd staar je naar het in het sterrenlicht glanzende glas terwijl zij het met de scherpste rand tegen je piemel aandrukt."; VraagToets(0,0,0); print "Nog @'e@'enmaal kijkt ze je aan, een blik vol haat en woede. Dan snijdt ze een aantal maal heen en weer; pijn schiet vanuit je kruis door je hele lichaam, je hapt naar adem en dan trekt zij de laatste velletjes kapot en gutst het bloed uit de open wond in je kruis waar zonet je mannelijkheid nog hing."; VraagToets(0,0,0); print "~Klootzak!~, bijt Maartje je toe, huilend, met overslaande stem, en ze steekt de glasscherf in je buik. ~Mijn leven heb je verpest!~ Nogmaals steekt ze je, en nogmaals, als een razende een waanzinnige een moorddadige engel der wrake en nogmaals en je voelt het nauwelijks nog omdat alles zwart en zwaar voor je ogen wordt en wanneer je omvalt en met je hoofd op de harde rand van het bed terecht komt merk je dat niet meer..."; } VraagToets(0,0,0); print "Terwijl je sterft komen er vragen bij je op, vragen waarop je het antwoord nu heel helder kan zien.^^"; doodmijmetscherf_vragen.select(1); return true; ]; [MaartjeZoen x; if(maartje.state == 1) { ! Ze leeft nog switch(x) { 1: print "Je buigt je voorover en zet je lippen op die van Maartje, eerst zachtjes, maar alras weet je jezelf niet meer te bedwingen. Je tong dwingt haar mond te openen, en je zoent haar wild en vol lust. Ondertussen hebben je handen haar kleine borstjes gevonden, en je streelt het zachte vlees. Maartje heeft haar ogen gesloten en ondergaat alles lijdzaam."; 2: print "Je buigt je naar Maartje toe en zoent haar; eerst haar gezicht, dan haar hals, haar armen, haar borsten, haar buik, haar benen, haar geslacht. Overal waar ze die maar kunnen vinden strelen je handen haar zachte huid. Zonder iets te zeggen en zonder te bewegen ondergaat Maartje lijdzaam je liefkozingen."; } VraagToets(0,0,0); maartje_zoen_tweede_dialoog.select(1); print "En opnieuw speel je het spel van de lust."; VraagToets(0,0,0); verkracht_vragen.select(1); return true; } else { ! Ze is dood print "Je buigt je naar het lijkje van Maartje toe, en begint haar te zoenen: eerst op haar dode lippen, dan haar hals, haar armen, haar borsten, haar buik, haar benen, haar geslacht. Zelfs in de dood weet ze je nog te betoveren."; VraagToets(0,0,0); maartje_zoen_derde_dialoog.select(1); return true; } ]; [MaartjeStreel x; if(maartje.state == 1) { ! Ze leeft nog switch(x) { 1: print "Je vingers traceren teder paden over de blanke huid van Maartje, over haar gezichtje, haar hals en haar nek, langs haar borsten en over haar buik. Maartje lijkt slechts zo diep mogelijk in het matras te willen wegzinken om je zoekende handen te ontkomen, maar je kan je niet beheersen en streelt haar steeds gepassioneerder en vuriger."; 2: print "Begerig storten je handen zich op Maartjes lichaam. Feilloos vinden je vingers hun weg tussen Maartjes benen. Ondertussen buig je je voorover om haar op haar mond te kunnen zoenen. Je adem gaat sneller en heftiger."; } VraagToets(0,0,0); maartje_zoen_tweede_dialoog.select(1); print "En opnieuw speel je het spel van de lust."; VraagToets(0,0,0); verkracht_vragen.select(1); return true; } else { ! Ze is dood print "Je buigt je naar het lijkje van Maartje toe, en begint haar prachtige lichaam te strelen: eerst haar dode lippen, dan de blanke huid van haar hals, haar armen, haar borsten, haar buik, haar benen, het krullerige haar van haar geslacht. Zelfs in de dood weet ze je nog te betoveren."; VraagToets(0,0,0); maartje_zoen_derde_dialoog.select(1); return true; } ]; [MaartjeVrij; if(maartje.state == 1) { ! Ze leeft nog maartje_zoen_tweede_dialoog.select(1); print "En opnieuw speel je het spel van de lust."; VraagToets(0,0,0); verkracht_vragen.select(1); return true; } else { ! Ze is dood print "Je buigt je voorover naar het weerloze lijkje van Maartje, overvallen door begeerte naar het vlees dat zelfs in de dood je geest kan betoveren. Vurig zoen je haar dode gezichtje."; VraagToets(0,0,0); maartje_zoen_derde_dialoog.select(1); return true; } ]; Object maartje_zoen_tweede_dialoog class Character, with quip [a b; switch (a) { 12: "Terwijl je het bed in kruipt fluister je:"; 13: qtype = MainMenu; qqon = true; killz = true; killq = true; 14: return Qlist(b, 3, 2, 3, 4); 21: "~Het spijt me, maar ik kan er niets aan doen.~"; 22: 23: qqon = true; killz = true; killq = true; 31: "~Ik houd van je, o Maartje, ik houd zo ontzettend veel van je.~"; 32: 33: qqon = true; killz = true; killq = true; 41: "~Het is je eigen schuld, hoor je dat? Dan had je maar niet zo mooi moeten zijn.~"; 42: 43: qqon = true; killz = true; killq = true; } rfalse; ], has concealed; Object verkracht_vragen class Character, with quip [a b; switch (a) { 12: print "Zal de cirkel ooit gebroken worden?^^"; 13: qtype = MainMenu; qqon = true; killz = true; killq = true; 14: return Qlist(b, 2, 2, 3); 21: "Ja. Niet vannacht, en misschien niet de volgende nacht - maar ooit zal hij gebroken worden."; 22: print "Ben jij schuldig?^^"; 23: qqon = true; killz = true; killq = true; 24: return Qlist(b, 3, 4, 5, 6); 31: "Nee. Nooit zal ik sterk genoeg zijn om het te be@:eindigen."; 32: print "Ben je schuldig?^^"; 33: qqon = true; killz = true; killq = true; 34: return Qlist(b, 3, 4, 5, 6); 41: "Meer dan schuldig: ik ben geen mens meer, ik ben een monster."; 42: deadflag = 3; return true; 43: qqon = true; killz = true; killq = true; 51: "Ja, ik ben zo schuldig als een mens ooit geweest is."; 52: deadflag = 3; return true; 53: qqon = true; killz = true; killq = true; 61: "Nee, ik ben slechts zwak: veracht mij, maar veroordeel mij niet."; 62: deadflag = 3; return true; 63: qqon = true; killz = true; killq = true; } rfalse; ], has concealed; Object maartje_zoen_derde_dialoog class Character, with quip [a b; switch (a) { 12: 13: qtype = MainMenu; qqon = true; killz = true; killq = true; 14: return Qlist(b, 2, 2, 3); 21: "Beheers je."; 22: "Zodra je beseft wat je aan het doen bent spring je verschrikt achteruit. Zelfs haar dode lichaam, zelfs dat is nog zo mooi, zo lief, zo... - resoluut kijk je een andere kant op."; 23: qqon = true; killz = true; killq = true; 31: "Neem haar zoals je haar zo vaak genomen hebt."; 32: print "Je kruipt op Maartje, en streelt haar zachte huid, kust haar bleke lippen, snuift de geur van haar haren op. Elke seconde wordt het verlangen sterker, en uiteindelijk neemt het geheel bezit van je.^^Voor de laatste maal speel je het spel van de lust."; VraagToets(0,0,0); na_haar_dood_dialoog.select(1); return true; 33: qqon = true; killz = true; killq = true; } rfalse; ], has concealed; Object na_haar_dood_dialoog class Character, with quip [a b; switch (a) { 12: "Hoe loopt deze zwarte geschiedenis af?"; 13: qtype = MainMenu; qqon = true; killz = true; killq = true; 14: return Qlist(b, 4, 4, 5, 6, 7); 41: "Ik maak nog deze nacht een einde aan mijn leven. Hiermee kan ik niet leven."; 42: deadflag = 3; return true; 43: qqon = true; killz = true; killq = true; 51: "De rest van mijn leven zal ik slijten in een kleine gevangeniscel. Dat is mijn straf."; 52: deadflag = 3; return true; 53: qqon = true; killz = true; killq = true; 61: "Wanneer het dorp begrijpt wat er gebeurd is hoeven ze mij eindelijk niet meer als mens te zien, en zullen ze me lynchen als monster. Zo heb ik het gewild; geen mens meer zijn, maar een monster."; 62: deadflag = 3; return true; 63: qqon = true; killz = true; killq = true; 71: "Het dorp wil de waarheid niet zien, en men geeft voor te geloven dat Maartjes dood een ongeluk was. De rest van mijn leven is @'e@'en groot verwijt aan mijzelf, een straf die erger is dan wat iemand anders mij ooit aan had kunnen doen."; 72: deadflag = 3; return true; 73: qqon = true; killz = true; killq = true; } rfalse; ], has concealed; [IkOverwinLust; print "Terwijl elke vezel van je lichaam schreeuwt dat je je bij Maartje neer moet vleien en @'e@'en met haar moet worden, draai je je om en loop je weg. Je bent sterker dan de lust. Je bent sterker."; VraagToets(0,0,0); overwin_lust_vragen.select(1); ]; Object overwin_lust_vragen class Character, with quip [a b; switch (a) { 12: "Is de band van de lust nu voorgoed gebroken?"; 13: qtype = MainMenu; qqon = true; killz = true; killq = true; 14: return Qlist(b, 2, 2, 3); 21: "Ja. Dit was de laatste nacht dat ik de tocht heb ondernomen."; 22: "Kan Maartje je ooit je daden vergeven?^"; 23: qqon = true; killz = true; killq = true; 24: return Qlist(b, 2, 4, 5); 31: "Nee. Deze strijd zal nog vele malen gestreden moeten worden."; 32: "Kan Maartje je ooit je daden vergeven?^"; 33: qqon = true; killz = true; killq = true; 34: return Qlist(b, 2, 4, 5); 41: "Nee. Of ik haar leven nu voor altijd verpest heb of niet, ze zal me altijd blijven haten."; 42: "Zal jullie gezin nog normaal en gelukkig kunnen worden?^"; 43: qqon = true; killz = true; killq = true; 44: return Qlist(b, 3, 6, 7, 8); 51: "Ja. Met de tijd helen de wonden en neemt haar haat af; en misschien zal er een dag komen dat ze me een heel klein beetje zal begrijpen, en een heel klein beetje medelijden - of zelfs liefde - zal voelen."; 52: "Zal jullie gezin nog normaal en gelukkig kunnen worden?^"; 53: qqon = true; killz = true; killq = true; 54: return Qlist(b, 3, 6, 7, 8); 61: "Het zal tijd kosten, maar het zal gebeuren. Zelfs de ergste wonden helen."; 62: deadflag = 3; return true; 63: qqon = true; killz = true; killq = true; 71: "Nee, als Maartje haar leven weet terug te vinden dan zal dat buiten ons gezin zijn."; 72: deadflag = 3; return true; 73: qqon = true; killz = true; killq = true; 81: "Misschien, maar zonder mij. Deze nacht zal ik voor altijd uit haar leven en dat van Hilde verdwijnen."; 82: deadflag = 3; return true; 83: qqon = true; killz = true; killq = true; } rfalse; ], has concealed; [DoodMaartje x; ! 3 = wurgen, 4 = stikken, 5 = kerven if(final_beer has general) print "Maartje probeert zich achter haar beer te verbergen "; if(final_beer hasnt general && final_deken_maartje has general) print "Maartje probeert dieper onder de deken weg te kruipen "; if(final_beer hasnt general && final_deken_maartje hasnt general) print "Hulpeloos ligt Maarte in haar blootje op bed "; switch(x) { 3: print "wanneer jij met moorddadige intentie op haar afloopt. Je legt je sterke handen om haar keel.^^"; 4: print "wanneer jij je met het kussen in je handen naar haar toe buigt.^^"; 5: print "wanneer jij met de messcherpe scherf op haar afkomt. Je drukt die zachtjes tegen haar keel aan.^^"; } dood_maartje_dialoog.select(1); if(dood_maartje_dialoog.keuze == 4) "Je bedenkt je, en stapt weer naar achteren. Moet je je nu al tot dit soort plannen verlagen? Je zucht diep."; switch(x) { 3: print "Dan knijp je, zo hard als je kunt, Maartjes luchtpijp dicht. Ze stribbelt tegen, maar kan tegen jouw kracht niets beginnen. Haar gezichtje loopt eerst rood aan, dan blauw, en in haar ogen is pure paniek te lezen. Maar jij knijpt en knijpt en knijpt, en alras verslapt het kleine lichaampje onder je - maar voor de zekerheid knijp je nog even door, zodat je zeker weet dat ze dood is."; 4: print "Dan druk je het kussen op haar gezicht, hard, zodat het zeker is dat ze geen adem meer kan halen. Maartje stribbelt tegen, maar kan tegen jouw kracht niets beginnen. Haar spartelende armpjes en beentjes proberen je te slaan en te schoppen, maar zonder effect, en even later worden hun bewegingen langzamer, tot ze geheel stil liggen. Je neemt het kussen van Maartjes gezicht weg. Daar ligt ze, bleek en stil. Dood."; 5: print "Dan snijd je met een ruk haar keel open. Bloed gutst over haar nek, over je handen, over haar lichaam en het bed. Het lijkt alsof ze probeert je nog iets te zeggen, maar er komen geen woorden meer uit haar mond, alleen een straaltje felrood bloed dat langs haar wang naar beneden druipt. Dan valt ze achterover, en beweegt niet meer."; } VraagToets(0,0,0); maartje_zelfmoord_dialoog.select(1); pray_dialoog.dochter_dood(); maartje.state = x; return true; ]; Object dood_maartje_dialoog class Character, with keuze 0, quip [a b; switch (a) { 12: 13: qtype = MainMenu; qqon = true; killz = true; killq = true; 14: return Qlist(b, 3, 2, 3, 4); 21: "~Vergeef me,~ fluister je. ~Vergeef me.~"; 22: self.keuze = 2; return true; 23: qqon = true; killz = true; killq = true; 31: "~Het is het beste. Geloof me,~ zeg je schor."; 32: self.keuze = 3; return true; 33: qqon = true; killz = true; killq = true; 41: "Zie van je daad af."; 42: self.keuze = 4; return true; 43: qqon = true; killz = true; killq = true; } rfalse; ], has concealed; !=================================================== ! Speciale zaken ! !=================================================== ! *** Menu *** !=================================================== Menu main_menu "Informatie over ~De baron~"; Menu -> "Interactieve fictie lezen (voor nieuwe lezers)"; Option -> -> "Eerste hulp bij interactieve fictie" with description "~De baron~ is een verhaal. Maar waar bij traditionele verhalen de tekst die de lezer voorgeschoteld zal krijgen al van tevoren vast staat, en hij of zij deze alleen maar tot zich hoeft te nemen, wordt van de lezer bij een interactief verhaal als ~De baron~ meer eigen inbreng verwacht. Telkens wanneer het programma een stuk tekst heeft getoond verschijnt er een prompt op het scherm, waarachter u verwacht wordt een opdracht in te typen. Door middel van deze opdrachten stuurt u het verhaal een bepaalde richting in.^^ U speelt dus zelf een actieve rol in de fictieve wereld. Centraal in het verhaal staat een hoofdpersoon, die de computer met u identificeert. U bestuurt de hoofdpersoon door hem opdrachten te geven. Wanneer u de opdracht 'BEKIJK BED' intypt, zal de hoofdpersoon naar het bed kijken, wat een meer gedetailleerde beschrijving van dit voorwerp oplevert. Typt u 'PAK DE KNUFFEL', dan wordt de knuffel opgepakt; bij 'OPEN DEUR' zal de hoofdpersoon de deur proberen te openen; et cetera. Experimenteer vooral met deze en andere werkwoorden, een deel van het plezier van interactieve fictie is het uitzoeken wat er allemaal mogelijk is in de fictieve wereld.^^ U dient er wel rekening mee te houden dat het programma maar een beperkte woordenschat en grammaticale kennis heeft, en dus het beste in zo kort mogelijke zinnen aangesproken kan worden. Waar 'PAK DE KNUFFEL' en 'PAK KNUFFEL' allebei werken, zal 'RAAP HET PLUIZIGE BEEST OP' waarschijnlijk geen effect meer sorteren, en is 'ZOU JE ALSJEBLIEFT DE KNUFFEL WILLEN OPPAKKEN?' voor de computer helemaal niet meer te begrijpen. Probeer dus in het algemeen uw doel met korte opdrachten, gebruik makend van zo simpel mogelijke werkwoorden, te bereiken.^^ Men dient het programma echter ook niet te onderschatten. Complexe zinnen als 'LEG DE KLEDING OP DE STOEL', 'OPEN DE DEUR MET DE BRONZEN SLEUTEL' en 'LEG ALLES OP TAFEL BEHALVE DE KRUIK' worden door veel programma's zonder moeite begrepen, als die voorwerpen althans aanwezig zijn in de fictieve wereld.^^ Tot slot is het nuttig u te bedenken dat de complexiteit van het programma beperkt is, en dus niet een hele wereld gemodelleerd kan worden. Zo is het in het algemeen het geval dat het programma wel bijhoudt in welke kamer u bent, maar niet waar u precies in die kamer bent, of welke kant u op gedraaid staat. Opdrachten als 'LOOP NAAR DE KAST' en 'DRAAI JE OM' zullen dus in de meeste verhalen geen effect hebben. Wanneer u meer interactieve fictie leest ontdekt u vanzelf welke aspecten meestal wel, en welke meestal niet worden gemodelleerd in verhalen."; Option -> -> "Belangrijke opdrachten" with description "Welke opdrachten een gegeven verhaal begrijpt kan sterk verschillen, maar er is een basis van algemene en zeer handige opdrachten die vrijwel elk verhaal begrijpt. De volgende opdrachten zullen u in bijna elk verhaal van pas komen; er wordt ook een Engelse variant gegeven, omdat het overgrote merendeel van de interactieve fictie nu eenmaal in het Engels is:^^^ KIJK:^^ Ook afgekort als K. Deze opdracht laat de hoofdpersoon rondkijken, en toont u zo nogmaals de beschrijving van de kamer waar hij of zij zich in bevindt. (In het Engels: LOOK en L.)^^ BEKIJK :^^ Ook afgekort als B of X. De hoofdpersoon zal nauwkeuriger kijken naar de persoon of het voorwerp dat u hem of haar vraagt te bekijken. Het is meestal verstandig om alles wat u belangrijk lijkt voor het verhaal te bekijken wanneer u het tegenkomt. Bekijk ook eens de dingen die u bij zich draagt, of de hoofdpersoon zelf: BEKIJK ME, X MIJ, of iets dergelijks. (In het Engels: EXAMINE en X.)^^ INVENTARIS:^^ Ook afgekort als I. Dit commando toont alles wat de hoofdpersoon bij zich draagt; dus alles wat u heeft opgepakt, en eventuele dingen die de hoofdpersoon al vanaf het begin van het spel bij zich had. Het is vaak een goed idee I te typen aan het begin van een verhaal. (In het Engels: INVENTORY of I.)^^ GA :^^ Er zijn tien standaard richtingen: NOORD, ZUID, WEST, OOST, ZUIDWEST, ZUIDOOST, NOORDWEST, NOORDOOST, OMHOOG en OMLAAG. Deze kunnen allemaal afgekort worden, tot respectievelijk: N, Z, W, O, ZW, ZO, NW, NO, H en L. Bovendien kan het GA commando weggelaten worden: GA NOORD, NOORD, GA N en N hebben dus allemaal hetzelfde effect. Sommige verhalen laten ook andere manieren van voortbewegen toe: GA IN AUTO, bijvoorbeeld, of GA NAAR SLAAPKAMER. Dat zal u zelf moeten uitzoeken. (In het Engels: N, S, W, E, SW, SE, NW, NE, U, D. Vergeet daar ook de werkwoorden ENTER en EXIT niet.)^^^ Een korte lijst met werkwoorden die voor zichzelf spreken:^^ PAK of NEEM ^^ LEG , LEG NEER of LAAT VALLEN^^ LEG OP ^^ OPEN ^^ SLUIT ^^ GEEF AAN ^^ DRAAG ^^ ONTSLUIT MET ^^ En in ~De baron~ kunt u met mensen spreken door PRAAT MET te typen.^^^ Enzovoorts. Probeer vooral door experimenteren erachter te komen welke werkwoorden werken in een bepaalde situatie, en welke niet. Wanneer de schrijver van een verhaal zijn werk goed gedaan heeft, dan zal de optie die u het meest logisch lijkt ondersteund worden."; Option -> -> "Meta-opdrachten: bewaren, laden, stoppen" with description "De meeste interactieve verhalen ondersteunen een aantal belangrijke meta-opdrachten. Deze hebben geen invloed op het verhaal, maar kunnen voor de lezer wel zeer nuttig zijn.^^^ SAVE of OPSLAAN:^^ U geeft een bestandsnaam in, en de huidige stand van het verhaal wordt bewaard, zodat u er later weer naar kunt terugkeren.^^ LOAD of INLEZEN:^^ U geeft een bestandsnaam in, en de daar opgeslagen positie van het verhaal wordt hersteld. Met behulp van SAVE en LOAD kunt u voorkomen dat u het verhaal opnieuw moet beginnen wanneer u iets gevaarlijks probeert te doen en dat verkeerd afloopt.^^ RESTART of HERSTART:^^ Hiermee start u het verhaal helemaal opnieuw.^^ QUIT of EINDE:^^ Hiermee sluit u het verhaal af. Het programma zal u om een bevestiging vragen. In plaats van 'ja' en 'nee' kunt u ook 'j' en 'n' typen.^^ UNDO:^^ Hiermee kunt u de opdracht die u het laatst heeft ingevoerd ongedaan maken. Het verhaal keert terug naar de toestand waarin het daarvoor was."; Menu -> "~De baron~ lezen (ook voor ervaren lezers)"; Option -> -> "Geen puzzels, maar thematische keuzes" with description "~De baron~ is geen traditionele text-adventure. Er zijn geen puzzels om op te lossen, en u kunt niet winnen of verliezen. Het is heel letterlijk interactieve fictie, niet een spel. Het doel is de fictionele wereld en de verontrustende thematiek van het verhaal zo intens mogelijk te beleven.^^ Er zijn een aantal zaken die de speler in zijn achterhoofd dient te houden tijdens het lezen van het verhaal. Er is geen enkele mogelijke manier om het spel in een toestand te krijgen van waaruit het niet meer af te ronden valt. Men kan ook niet onverhoeds een einde bereiken voordat het verhaal bij het werkelijke eindpunt is aangekomen. Bovendien is het verhaal zo ontworpen dat vrijwel elke zinnige actie het verhaal een stap vooruit helpt: er is in feite geen enkel echt obstakel op de weg. De vraag is niet OF de lezer naar het einde van het verhaal weet te komen, maar HOE hij of zij daar komt.^^ Wat de lezer zich dus dient af te vragen tijdens het spelen is niet: gaat deze actie mij helpen het verhaal af te ronden?, maar: vind ik deze actie passend, mooi, verontrustend of anderszins thematisch interessant? Wanneer men ergens een bijl tegenkomt, dan kan men die oppakken of niet; geen van beide is noodzakelijk om het verhaal door te komen. De keuze is thematisch: wil je een verhaal vertellen waarin de hoofdpersoon met een bijl in zijn handen zijn problemen tegemoet treedt, of liever een verhaal waarin hij ongewapend zijn gelijk gaat halen?^^ Het verhaal bevat een aantal belangrijke knooppunten, die allemaal op veel verschillende manieren kunnen worden afgehandeld. De keuzes die de speler hier maakt zullen van grote invloed zijn op de betekenis van het verhaal; en dat is waar het in ~De baron~ om te doen is: de lezer treedt op als een scheppende thematische kracht, die de symbolen en handelingen naar zijn eigen smaak en inzicht aaneenrijgt."; Option -> -> "Emotionele inhoud en leeftijdsadvies" with description "In dit verhaal is een tragisch en mogelijk schokkend thema aan de orde. ~De baron~ is dan ook zeker niet geschikt voor kinderen; ik adviseer een leeftijdsgrens van tenminste vijftien jaar. Ook wie er geen behoefte aan heeft geconfronteerd te worden met fictieve narigheid kan dit verhaal beter links laten liggen.^^ Voor de Spring Thing competitie, waarin u een bepaald aantal werken zult moeten lezen om te mogen stemmen, betekent dit misschien dat u ~De baron~ een 1 zal moeten geven wanneer u vanwege bovenstaande besluit dit verhaal links te laten liggen. Schroom niet om dat te doen. Ik heb liever een 1 dan een lezer die tegen zijn of haar zin verder leest."; Menu -> "Walkthroughs en ontwerpfilosofie"; Option -> -> "WAARSCHUWING" with description "[DE COMPETITIEVERSIE BEVAT SLECHTS 1 WALKTHROUGH EN GEEN ONTWERPFILOSOFIE. De beoordeling van de jury moet afhangen van het werk zelf, en niet van commentaar op het werk door de auteur.]^^ De informatie in dit deel van het menu kunt u beter niet lezen voordat u minimaal @'e@'enmaal ~De baron~ geheel gelezen en verwekt hebt. De 'walkthroughs' geven aan hoe u op verschillende manieren door het hele verhaal kunt komen, en vernietigen zo de kracht van het zelf ontdekken. De ontwerpfilosofie behandelt het doel dat ik poogde te bereiken met het schrijven van ~De baron~, en ook dat kan men beter pas naderhand te weten komen om het verhaal zelf zonder preconcepties tegemoet te kunnen treden. "; Option -> -> "Walkthrough" with description "Aangezien er geen puzzels voorkomen in ~De baron~ zult u waarschijnlijk geen walkthrough nodig hebben. Hieronder niettemin een manier om van het begin van het werk naar het einde te komen. Af en toe vraagt het programma om een willekeurige toets. Dit is niet opgenomen in onderstaand walkthrough.^^^ N . N . N . N . N . N . L . O . O . O . J . O . 1 . 1 . 1 . 1 . N . NW . N . H . DOOD BARON . DOOD BARON . 1. PAK KROON . DRAAG KROON . OPEN DEUREN . BREEK SPIEGEL . PAK SCHERF . DOOD MIJ . 1 . 1 . 1"; Option -> -> "Ontwerpfilosofie" with description "In de competitieversie van ~De baron~ is geen bespreking van de ontwerpfilosofie opgenomen. De beoordeling van de jury moet afhangen van het werk zelf, en niet van commentaar op het werk door de auteur."; Option -> "Copyright" with description "Copyright 2004, Victor Gijsbers^^ ~De baron~ wordt gepubliceerd onder de GNU General Public License. (Na de Spring Thing competitie zal ik de broncode naar buiten brengen; mail mij als je hem voor die tijd al wilt zien.) Kort gezegd houdt dit in dat zowel dit programma als de broncode gratis te verkrijgen zijn en naar hartelust gekopieerd en verspreid mogen worden. Echter, alle software of andere werken waarin delen van dit programma of de broncode gebruikt worden, moeten op hun beurt ook onder de GNU General Public License uitgebracht worden.^^^ This program is free software; you can redistribute it and/or modify^ it under the terms of the GNU General Public License as published by^ the Free Software Foundation; either version 2 of the License, or^ (at your option) any later version.^^ This program is distributed in the hope that it will be useful,^ but WITHOUT ANY WARRANTY; without even the implied warranty of^ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the^ GNU General Public License for more details.^^ You should have received a copy of the GNU General Public License^ along with this program; if not, write to the Free Software^ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA^^^ Kijk op http://www.gnu.org/licenses/gpl.txt voor de tekst van de GNU General Public License."; Menu -> "Dank, verantwoording, contact"; Option -> -> "Dankwoord" with description "Veel eer gaat naar mijn beta-testers Eva Deinum, Annette van de Kraats, Ivo Wever en Remko van der Pluijm. Zonder jullie was deze hele onderneming niets geworden. Daarnaast wil ik een vijfde beta-tester bedanken die het een verschrikkelijk werk vond en niet met name genoemd wilde worden.^^ Bij het schrijven werd dankbaar gebruik gemaakt van Graham Nelsons ~Inform~ en Yuri Robbers vertaling van en niet aflatende ondersteuning bij de Nederlandse Inform Library. Ik gebruikte de volgende extensies: pname.h van Neil Cerutti; GoNeighbour van Alan Trewartha; menus van Graham Nelson; en gtalk.h van Greg Boettcher en Mark J. Tilford. Extra dank gaat uit naar Greg Boettcher voor zijn snelle updates van gtalk.h.^^ ~De baron~ is geheel ontwikkeld met open source software, waaronder: Gentoo Linux, Suse Linux, Inform, Frotz, Gnome Terminal, KWrite, Gedit, OpenOffice.org, Mozilla Firefox en Mozilla Thunderbird."; Option -> -> "Verantwoording" with description "Het interactieve verhaal ~De baron~ werd geschreven door Victor Gijsbers. Het is zijn eerste Interactive Fiction werk.^^ Dit is de Nederlandse versie van de Spring Thing release."; Option -> -> "Contact" with description "Neem bij vragen, commentaar of bugreports vooral contact op met de auteur: victor@@64lilith.gotdns.org."; [ MenuSub; main_menu.select(); ]; !=================================================== ! *** Technische Subs *** !=================================================== [ VraagToets a b c i; ! This routine is called with 3 options, a, b and c, and returns nothing. ! In any case, the routine prints two returns, and waits for a key to be pressed. ! If a = 1, the routine prints a bold-faced messages asking for a key to be pressed. ! If b = 1, the routine clears the screen once the key is pressed. ! If c = 1, the routine executes the Look-command after the key is pressed. print "^^"; if(a == 1){style bold;print "[Druk op een toets.]^";style roman;}; @read_char 1 -> i; if(b == 1) @erase_window -1; if(c == 1) {print "^"; <>;}; ]; ! *** The normal routine from parserm.h, but without the turns *** [ DrawStatusLine width posa posb; #Ifdef TARGET_GLULX; ! If we have no status window, we must not try to redraw it. if (gg_statuswin == 0) return; #Endif; ! If there is no player location, we shouldn't try to draw status window if (location == nothing || parent(player) == nothing) return; StatusLineHeight(gg_statuswin_size); MoveCursor(1, 1); width = ScreenWidth(); posa = width-26; posb = width-13; spaces width; MoveCursor(1, 2); if (location == thedark) { print (name) location; } else { FindVisibilityLevels(); if (visibility_ceiling == location) print (name) location; else print (The) visibility_ceiling; } if (sys_statusline_flag && width > 53) { MoveCursor(1, posa); print (string) TIME__TX; LanguageTimeOfDay(sline1, sline2); } else { if (width > 66) { #Ifndef NO_SCORE; MoveCursor(1, posa); print (string) SCORE__TX, sline1; #Endif; MoveCursor(1, posb); ! print (string) MOVES__TX, sline2; Commented this line out } #Ifndef NO_SCORE; if (width > 53 && width <= 66) { MoveCursor(1, posb); print sline1, "/", sline2; } #Endif; } MainWindow(); ! set_window ]; ! *** Affecting scope in the dark *** [ InScope person; if (person in kasteel_kerker) { if (person == player && location == thedark) { PlaceInScope(kerker_luik); PlaceInScope(kasteel_kerker_druppels); } } rfalse; ]; [ AfterGameOver i; VraagToets(0,0,0); .RRQPL; L__M(##Miscellany,5); .RRQL; print "> "; #Ifdef TARGET_ZCODE; #IfV3; read buffer parse; #Endif; ! V3 temp_global=0; #IfV5; read buffer parse DrawStatusLine; #Endif; ! V5 #Ifnot; ! TARGET_GLULX KeyboardPrimitive(buffer, parse); #Endif; ! TARGET_ i = parse-->1; if (i == QUIT1__WD || i == QUIT2__WD || i == 'quit') { #Ifdef TARGET_ZCODE; quit; #Ifnot; ! TARGET_GLULX quit; #Endif; ! TARGET_ } if (i == RESTART__WD || i == 'restart') { #Ifdef TARGET_ZCODE; @restart; #Ifnot; ! TARGET_GLULX @restart; #Endif; ! TARGET_ } if (i == RESTORE__WD || i == 'restore') { RestoreSub(); jump RRQPL; } if (i == 'menu') { new_line; MenuSub(); jump RRQPL; } #IfV5; if (i == UNDO1__WD or UNDO2__WD or UNDO3__WD) { if (undo_flag == 0) { L__M(##Miscellany, 6); jump RRQPL; } if (undo_flag == 1) jump UndoFailed2; #Ifdef TARGET_ZCODE; @restore_undo i; #Ifnot; ! TARGET_GLULX @restoreundo i; i = (~~i); #Endif; ! TARGET_ if (i == 0) { .UndoFailed2; L__M(##Miscellany, 7); } jump RRQPL; } #Endif; ! V5 L__M(##Miscellany, 8); jump RRQL; ];